package modelo;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;

public class DisparoTest {

	private Municion disparo;
	
	@Before
	
	public void setUp(){
		
		Coordenada posicion = new Coordenada(1,1);
		disparo = new Disparo(posicion);
	
	}
	
	@Test
	public void testElCostoDeUnDisparoEs200Puntos(){
		
		Assert.assertEquals(disparo.getCosto(),200);
	
	}
	
	@Test
	
	public void testDisparoNoUsadoDebeDarFalse(){
	
		Assert.assertFalse(disparo.estaUsada());
	}
	
	@Test
	
	public void testDisparoUsadoEnPosicionVaciaDebeDarTrue(){
		
		disparo.vivir();
		disparo.atacar(null);
		Assert.assertTrue(disparo.estaUsada());
	
	}
	
	@Test
	public void testDisparoUsadoEnPosicionConPartesDebeDarTrue(){
		
		Coordenada  posicion = new Coordenada (1,1);
		Movimiento movimiento = new MovimientoAlSur();
		Orientacion miOrientacion = new OrientacionHorizontal();
		Nave lancha = new Lancha(posicion,movimiento,miOrientacion);
		disparo.vivir();
		disparo.atacar(lancha);
		Assert.assertTrue(disparo.estaUsada());
	
	}
	
	@Test
	public void testDisparoUsadoEnPosicionesConPartesDebeDestruir(){
		
		Coordenada  posicion = new Coordenada (1,1);
		Movimiento movimiento = new MovimientoAlSur();
		Orientacion miOrientacion = new OrientacionHorizontal();
		Nave lancha = new Lancha(posicion,movimiento,miOrientacion);
		
		disparo.atacar(lancha);
		posicion = new Coordenada(2,1);
		disparo = new Disparo(posicion);
		disparo.atacar(lancha);
		
		Assert.assertTrue(lancha.estaDestruida());
	}
}
